雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|
2024|06|
2025|01|

2003-12-13 SSL man in tne middle(MITM) demo [長年日記]

限定30日間のデモと解説を作ってみました.

追記

12/17 :
  • 「限定30日間」と言うのは,30日経過するとデモが動かなくなるという意味で,この日記を消すわけではありません.分かりにくい表現でごめんなさい.
  • 1ヶ所修正しました.フットノート参照.
  • セキュリティホールmemoで小島さんがCAルート証明書をインストールしなくても良い例を出してくださっています.あの例で,表示される内容としては実際のMicrosoftのサイトに似せてあったり,個人情報の入力を促すようなフォームが並んでいたりするといったページを想像していただけると分かりやすいかなと思います.あるいは,netsecurity.ne.jpさんのページを,間に入ることによって改竄するとか.
12/24:
  • ISSからMicrosoft Internet Explorer domain URL spoofing filterというのが出ていますが,Donut Pではうまく動作せず,相変わらず偽装サイトの方に飛ばされてしまいます.ただし,Donut Pでは偽装サイトに飛んだ時にはアドレスバーの末尾に%00が表示されるなど,もともと気づきやすいような動作をしますので,問題ないのかもしれません.
    Dounat P 同様,IEをエンジンとして使っている他のアプリケーションについては,こうしたツールが本来の役割をちゃんと果たすのかどうかちゃんと確認した方が良いでしょう.
  • ZDNetにIEのサイト偽装問題で被害をこうむらないためにという記事が出ています.
    当該サイトがホスティングサービスなどを利用している場合は一概には言えないが、証明書の発行先と現在アクセスしているURLとかけ離れたものではないかを確認すべきだ。
    の下りは,私だったら,
    具体的には,証明書の発行先と現在アクセスしているURLのホスト名とが異なるものではないかを確認する.当該サイトがホスティングサービスなどを利用している場合,正しいサイトにアクセスしていても,アドレスバーの表示と証明書の発行先が異なる可能性はありうるが,それが本当に正しいサイトなのか,偽装された物なのか見分けることは困難なので,そうしたサイトでの個人情報の入力も控えた方が良いだろう.
    と書くところですが.「見分けることは困難」のあたりがちょっと弱気.あと,ホスティングしていても証明書の発行先がアクセス先と異なる事は無いような気もしますが,フレームを使ってhttpsでのアクセス先を隠している場合とかと混同してる??
  • ISSのツールとは別のものですが,IE用のサードパーティ製のパッチに脆弱性が存在したという話もあるようです.

準備するもの

脆弱性を含んだインターネット・エクスプローラ

SSL MITMの確認

まずは,以下のリンクにマウスカーソルを当てて見てください.カーソルを当てるだけでクリックはしません.
https://www.example.com/fake/URL/
すると,ウィンドウ下のステータスバーの表示が「https://www.example.com/fake/URL/」となり,www.example.comに飛ばされるよう誤解してしまいます.
ステータスバーをごまかす

次に,上のリンクをクリックしてみてください.するとこの時点では,次のような警告が出ます.

証明書の警告 (クリックで拡大)

ここで,警告の項目のうち,「このセキュリティ証明書は信頼する会社から発行されていません」と言うところだけに警告マークがついていることに注意しましょう.確認したら,ここではいったん「いいえ」をクリックしてダイアログウィンドウを閉じてください.もし,以下の注意書きを読んでCAルート証明書のインストールはやらないという結論に達した場合,ここで「はい」をクリックすれば,問題点の確認だけ行うことも出来ます.

さて,次に認証局のルート証明書をインターネットエクスプローラにインストールするのですが,ここで警告を.

これから示す手順では,私がデモ用に準備したCAルート証明書を「信頼できる」ものとしてインターネットエクスプローラにインストールしますが,そうすると,このデモ用のCAルート証明書を使ってサインした,すべてのサーバ証明書が警告無しに許可され,SSLで暗号化されたページが表示されるようになってしまいます.今回のデモで使用したCAルート証明書の有効期限は2004年1月13日までとなっており,最後に説明するCAルート証明書のアンインストールを行わないと,この有効期限までの間,このCAルート証明書を悪用して,あなたのコンピュータにSSL MITM攻撃を仕掛けることが可能になります.
私は,デモの動作確認をした時点でCAルート証明書の鍵ファイル他,サインに必要なデータをすべて破棄しましたが,この「破棄しました」という記述自体が真実であると言うことを,インターネットを介してこのページを見ている人に対して証明することは出来ませんし,私がCAルート認証局の証明書を作成してから動作確認を終えるまでの約2時間の間に,このデモ用のCAルート証明書が盗まれなかったという保証もできません.それらのことを踏まえたうえで,以下の手順を本当に試すかどうか慎重に判断し,自己責任で作業を進めてください,
上の警告を読み,理解した上でなお試してみたいと言う方は,下のファイルをクリックしてください.
デモ用CAルート証明書

すると,「ファイルのダウンロード」というダイアログウィンドウが現れます.

「開く」ボタンをクリック(クリックで拡大)

「開く」ボタンをクリックしてCAルート証明書を開きます.

デモ用CAルート証明書(クリックで拡大)

「証明書のインストール」ボタンをクリックすると,以下のように「証明書のインポート ウィザード」が開きますので「次へ」「次へ」「完了」の順にクリックして,CAルート証明書をインストールします.

証明書のインポート(1) 証明書のインポート(2) 証明書のインポート(3) (クリックで拡大)

「ルート証明書ストア」というダイアログウィンドウが出てきて本当にデモ用CAルート証明書をインストールしてよいかどうか聞いてきます.上の警告文をもう一度よく読んで理解し,本当によければ「はい」をクリックします.

証明書インストールの最終確認

これで準備は完了です.もう一度サンプルのリンクをクリックすると,今度は証明書に関する警告無しにジャンプするはずです.下のリンクは一番最初に書いたものとまったく同じものです.これを今度はクリックしてみましょう.

https://www.example.com/fake/URL/


















ほらね.今度は警告無しでここにジャンプしてくるはずです.

問題点の確認

「ほらね」と言われても別に日記が表示されるだけで,問題ないと思うかもしれませんが,今,あなたが見ている画面にはいくつか普通ではない点があります.

まずは,ウィンドウ上のアドレスバーを確認してください.(画像のサイズを小さくするため,一部だけ切り抜いて示します.)

偽装アドレスバー

赤線で示したアドレスの部分が見事に偽装されていますね.ここの文字列は任意に設定可能なので,例えば,オンラインショップのURLっぽく見せることも出来ます.

次にウィンドウの右下を見てみましょう.

SSL暗号化されている!!

鍵マークが付いているので,このページはちゃんと(?)暗号化されていることが分かります.さて,ここでちょっと思い出してみてください.

自分のアクセスしているページのURLが「https://」で始まっていて,ウィンドウの右下に上のような鍵のマークが付いていればそのページは安全だ.

という説明を受けたことがありませんか? もしくは今でもそう思っていませんか? その考えは今となっては誤りであると言うことを,これから説明します.

では,試しに右下の鍵マークをダブルクリックしてみましょう.

アドレスバーに表示されているURLと証明書の発行先が違う!!(クリックで拡大)

アドレスバーに表示されているサーバ名と,証明書の発行先のサーバ名が違います.上の例では,本当はwww.on-sky.netにアクセスしているのに,アドレスバーだけを見ると,あたかもwww.example.comにアクセスしているように見えます.繰り返しになりますが,この「www.example.com」の部分には任意の文字列を表示させられますので,例えば,オンラインショップのアドレスを偽装することも可能です.また,サーバ証明書()の発行先が「www.on-sky.net」である点にも注意しましょう.このドメイン自体は,私が所有している正当なものなので,私が「www.on-sky.netに対する証明書ください」と申請すれば,ベリサインだろうがどこであろうが100%間違いなく証明書を発行してくれるでしょう.そういった,最初から信頼されている証明書発行機関を利用すると,今回やってもらったような,CAルート証明書をインストールすると言う手順を踏まなくても,「証明書に関する警告無しにwww.on-sky.netにクライアントを誘導する」ということが出来てしまいます.この手法を悪用して犯罪を犯そうとする場合,証拠が残らないよう証明機関に嘘の申請をすることになりますが,審査の甘い証明機関はいくらでもありそうなので,問題ないでしょう.また,そうした犯罪の被害者になったとして,証明書を発行した証明機関に責任があると言うのは難しいでしょう.証明機関側からすれば,正当なドメインに対して正当な証明書を発行するだけですので().

この例では日記を表示させているだけですが,実際に偽装したいオンラインショップに似せたページを作ったり,あるいはそのオンラインショップのサーバにアクセスして,それを中継したりすることも可能です.これを概念的に図で示すと,以下のようになります.

SSL MITM概念図

図で「サーバ」となっているのが,ターゲットとなるオンラインショップ等,「中継機」となっているのが,この例ではwww.on-sky.net.「クライアント」となっているのがあなたのマシンです.ここで問題なのは,クライアントから暗号化されて届いた個人情報・クレジットカード番号などといったすべてのデータが,いったん平文になって中継機を通過してから再び暗号化されてサーバに届くと言う点で,中継機を通過する間に情報を盗み放題になってしまうと言う点です.また,上の図のモデルでは本来のオンラインショップとの中継を行うので,買い物自体は問題なく成功し,ユーザーは情報を盗まれたことに気づけないという点も重要です.

対策

私の考える最も良い対策は「パッチが出るまでインターネットエクスプローラを使わない」ことです.どうしても使いたい場合,「https://」で始まるサーバに接続したら,必ず右下の鍵マークをダブルクリックして,証明書の発行先として表示されるサーバ名とアドレスバーに表示されるサーバ名が一致しているかどうかを,ページを読み込む毎にいちいち確認するしかないでしょう.

あとかたづけ

以上で解説は終了です.最後に今回の確認作業でインストールしたCAルート証明書を削除します.

まずはウィンドウ上にあるメニューの「ツール(T)」→「インターネットオプション(O)」をクリックして,インターネットオプションウィンドウを開きます.

インターネットオプションを開く

次に,「コンテンツ」タブ(図中①)をクリックしてから「証明書」ボタン(図中②)をクリックして,証明書の一覧を開きます.

証明書の一覧を開く

証明書の一覧ウィンドウが開いたら,「信頼されたルート証明機関」タブ(図中①)をクリックします.すると一覧が表示され,今回インストールした証明書(発行先が「00 dummy root ...」となっているもの」がリストの一番上に表示される(図中②)はずですので,これをクリックして選択状態(背景が青)にします.選択したら「削除」ボタン(図中③)をクリックしてCAルート証明書を削除します.

インストールしたCAルート用証明書を削除する

途中,以下のような確認の警告が出ますので,内容を読んで間違ったCAルート証明書を選択していないか確認し,問題なければ「はい」を押します.

削除時の警告(1)

削除時の警告(2)

結び

さて,いかがだったでしょうか? 断っておくと,このシナリオによってSSLの枠組みそのものが否定されるわけではありません.本来なら鍵マークをダブルクリックすることによって確認すべきサーバ名を,アドレスバーに表示されているもので代用すると言うユーザー側の運用上の問題なのです.ただし,ブラウザはちっちゃな鍵マークだけを表示するのではなく,ちゃんと現在の通信で使われているサーバの証明書が,どこに対して発行されたものであるのかということを分かりやすい場所に表示すべきであって,それをアドレスバーで代用させていたのは,ブラウザを作っているベンダー自身であったのは確かです.

当初この一連の日記を削除することも考えましたが,すでにアクセス元に心当たりのない,いくつかのアクセスをいただいていたことから,どうせならより正確な情報を提供したほうが良いと判断しました.この判断が正しかったのかどうか,まだ少し悩んでいます.公開にあたっては,ユーザー側から見た問題点はなるべく具体的に示し,攻撃に必要な情報は最小限に抑え,これまでに書いてしまったもの以上に詳しい情報は書かないようにしたつもりです.

本日のツッコミ(全7件) [ツッコミを入れる]
- mak-y (2003-12-15 09:31)

やはりショッピング系には手は出せんなって気にさせられてしまう。。。

- mak-y (2003-12-15 09:32)

ところで、前のSubjectにあったOperaはどうなの?<br>使い易いの?試用したいと思いつつ時間に流され・・・

- taru-k (2003-12-15 10:01)

Opera:ブラウザ=無料が普通に慣れてしまうと、バーナ広告を受け入れて無料版を使うか、お金を払うかが悩ましい所か?

- taru-k (2003-12-15 12:26)

「ここは**(有名オンラインショップ)だからまぁ大丈夫しょ」ってのが通用しなくなるから、怖いよね。

- hs (2003-12-15 12:59)

オンラインショップが危ないと思わせてしまったのは,私のミスリーディングだな.<br>今回の例は,どちらかというとIEが危ないという話です.ただし,SSLで通信しているときに鍵マークしか示さないという問題は,私の知る限りではほとんどのブラウザ共通の話なので,IEだけ槍玉にあげるのはそれはそれで不公平かなとも思ったりして.<br>なかなか難しいですな.

- hs (2003-12-15 13:04)

taru-k> そう.うまく中継器を作れば,クライアントでアクセスしようとしているショップを認識し,本物を引っ張ってくるという万能偽装装置ができてしまうからね.<br>って,これは本文に書いた方が良いか.

- mak-y (2003-12-15 13:40)

なるほど。しかし、個人情報として漏れると困るものという意味では(どれも漏れると困るが)やっぱりIDとPassword持つものって感じだからね。